参考 : https://www.cnblogs.com/liuhao-web/p/13184486.html

<!-- 
react 捕获异常的机制 并不能捕获如下四种错误：
    事件处理
    异步代码（例如 setTimeout 或 requestAnimationFrame 回调函数）
    服务端渲染
    它自身抛出来的错误（并非它的子组件）
  -->

<script>
	class ErrorBoundary extends React.Component {
		constructor(props) {
			super(props);
			this.state = { hasError: false };
		}

		componentDidCatch(error, info) {
			// Display fallback UI
			this.setState({ hasError: true });
			// You can also log the error to an error reporting service
			logErrorToMyService(error, info);
		}

		render() {
			if (this.state.hasError) {
				// You can render any custom fallback UI
				return <h1>Something went wrong.</h1>;
			}
			return this.props.children;
		}
	}
</script>
